import axios from 'axios'
import {Notify} from 'vant'
import store from './store'

import router from "./router";
import Home from "./views/Home.vue";
import Login from "./views/Login.vue";

//定义变量 然后所有的axios请求都会加上这一段

/**
 * 请在此处更改 你的服务器地址
 * @type {string}
 */

axios.defaults.baseURL="http://localhost:8080"
// axios.defaults.baseURL = "http://192.168.1.10:8080"
axios.defaults.withCredentials = true

// axios.defaults.baseURL = "/api"
// 参考资料：https://www.jianshu.com/p/ff8541e0976a


// 请求拦截器
axios.interceptors.request.use(function (config) {
  // 发送请求的相关逻辑
  // config:对象  与 axios.defaults 相当
  // 借助config配置token
  var token = localStorage.getItem('token')

  // 判断token存在再做配置
  if (token) {
    // let token = JSON.parse(userinfo).token
    config.headers.token = token



  }
  return config
}, function (error) {
  // Do something with request error
  return Promise.reject(error)
})


// 后置拦截  怎么个处理
axios.interceptors.response.use(response => {
    //拿到前端的Result
    let res = response.data;
    // console.log(res)
    if (res.code === 200) {
      //正常
      // console.log("全局拦截正常")
      return response
    }

    if (res.code === 'ERR_BAD_REQUEST')
      alert('nnn')

    if (res.code === 401 || res.code === 402) {
      console.log("用户或密码错误")
      Notify({type: 'warning', message: '用户或密码错误 😢'});
      // location.reload()
      return response
    }

  },
  // 如果前端没有接收到result 因为 后端通过Assert已经 error  也就是处理服务器error的情况
  //例如 登录的时候 查询database中的账号 查不到的时候
  error => {
    // //console.log(error)
    // //当data不为空  表示 该异常被后端封装了data的时候 就赋值
    // if (error.response.data) {
    //   error.message = error.response.data.msg
    // }
    //
    // //401/402登录失败（后的权限）
    // if (error.response.status === 401 || error.response.status === 402) {
    //   // Notify({ type: 'warning', message: error.message+' 😢' });
    //   return
    // }
    //
    // //除了401的错误  都直接 友好提示
    // Notify({ type: 'warning', message: error.message +' 😢' });
    // return Promise.reject(error)
    if (error.response.status) {
      Notify({type: 'warning', message: error.response.data});
      router.push('/login');
      return
    }
    // console.log(error)
    Notify({type: 'warning', message: error.message + ' 😢'});
    // return(error)
    return Promise.reject(error);
  }
)

